package IO_study.bytesStream;

import java.io.FileInputStream;
import java.io.InputStream;

/**
 *  使用文件字节流每次读取一个字节数组的数据
 */
public class FIleInputStreamDemo2 {
    public static void main(String[] args) throws Exception {
        // 1.创建一个文件字节输入流管道与源文件接通
        InputStream is = new FileInputStream("Java-basic/src/IO_study/data.txt");

        // 2.定义一个字节数组,用于读取字节数组
//        byte[] buffer = new byte[3]; //1024 1KB(常用)
//        int len = is.read(buffer);
//        System.out.println("读取了几个字节:" + len);
//        String rs = new String(buffer); // 对字节数组进行解码
//        System.out.println(rs);
//
//        int len1 = is.read(buffer);
//        System.out.println("读取了几个字节:" + len1);
//        // 读取多少倒出多少
//        // 指定读取的起始位置和读取长度(常用)
//        String rs1 = new String(buffer, 0, len1); // 对字节数组进行解码
//        System.out.println(rs1);
//
//        int len2 = is.read(buffer);
//        System.out.println("读取了几个字节:" + len2);
//        String rs2 = new String(buffer); // 对字节数组进行解码
//        System.out.println(rs2);

        // 3.改进使用循环,每次读取一个字节数组
        byte[] buffer = new byte[3];
        int len; // 记录每次读取的字节数
        while ((len = is.read(buffer)) != -1) {
            // 读取多少到处多少
            // 仍然无法彻底避免读取文件输出中文乱码
            System.out.print(new String(buffer,0 ,len));
        }


    }
}
